package com.Algorithm.HUAWEI.two20220303;

import java.util.*;

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: zjz
 * @Date: 2022/03/04/11:24
 * @Description:
 * @Target:
 */
public class 简单错误记录 {
    /*
    * 描述
        开发一个简单错误记录功能小模块，能够记录出错的代码所在的文件名称和行号。


        处理：


        1、 记录最多8条错误记录，循环记录，最后只用输出最后出现的八条错误记录。对相同的错误记录只记录一条，
        * 但是错误计数增加。最后一个斜杠后面的带后缀名的部分（保留最后16位）和行号完全匹配的记录才做算是“相同”的错误记录。
        2、 超过16个字符的文件名称，只记录文件的最后有效16个字符；
        3、 输入的文件可能带路径，记录文件名称不能带路径。也就是说，哪怕不同路径下的文件，如果它们的名字的后16个字符相同，也被视为相同的错误记录
        4、循环记录时，只以第一次出现的顺序为准，后面重复的不会更新它的出现时间，仍以第一次为准

        数据范围：错误记录数量满足 1 \le n \le 100 \1≤n≤100  ，每条记录长度满足 1 \le len \le 100 \1≤len≤100
        输入描述：
        每组只包含一个测试用例。一个测试用例包含一行或多行字符串。每行包括带路径文件名称，行号，以空格隔开。

        输出描述：
        将所有的记录统计并将结果输出，格式：文件名 代码行数 数目，一个空格隔开，如：

        示例1
        输入：
        D:\zwtymj\xccb\ljj\cqzlyaszjvlsjmkwoqijggmybr 645           输出：
        E:\je\rzuwnjvnuz 633                                        rzuwnjvnuz 633 1
        C:\km\tgjwpb\gy\atl 637                                     atl 637 1
        F:\weioj\hadd\connsh\rwyfvzsopsuiqjnr 647                   rwyfvzsopsuiqjnr 647 1
        E:\ns\mfwj\wqkoki\eez 648                                   eez 648 1
        D:\cfmwafhhgeyawnool 649                                    fmwafhhgeyawnool 649 1
        E:\czt\opwip\osnll\c 637                                    c 637 1
        G:\nt\f 633                                                 f 633 1
        F:\fop\ywzqaop 631                                          ywzqaop 631 2
        F:\yay\jc\ywzqaop 631
        D:\zwtymj\xccb\ljj\cqzlyaszjvlsjmkwoqijggmybr 645
        说明：
        由于D:\cfmwafhhgeyawnool 649的文件名长度超过了16个字符，达到了17，所以第一个字符'c'应该被忽略。
        记录F:\fop\ywzqaop 631和F:\yay\jc\ywzqaop 631由于文件名和行号相同，因此被视为同一个错误记录，哪怕它们的路径是不同的。
        由于循环记录时，只以第一次出现的顺序为准，后面重复的不会更新它的出现时间，仍以第一次为准，所以
        * D:\zwtymj\xccb\ljj\cqzlyaszjvlsjmkwoqijggmybr 645不会被记录。
    *
    *
    * */
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        HashMap<String,Integer> hashMap = new HashMap();
        // 一种是ArrayList，不断存入。
        // map的replace
        ArrayList arrayList = new ArrayList();
        ArrayList<simpleRecord> list = new ArrayList();
        list.add(new simpleRecord(1,"213d",1));
        while (in.hasNextLine()){
            String[] split = in.nextLine().split("\\\\");
         /*   if (split[0].equals("0")){
                break;
            }*/
            String[] s = split[split.length - 1].split(" ");
            int len = s[0].length();
            int index = 0;

            // 要求进入的顺序不变，变的只是记录次数。
            if (len>16){
                if (hashMap.containsKey(s[0].substring(len-16,len)+" "+s[1])){
                    hashMap.replace(s[0].substring(len-16,len)+" "+s[1],hashMap.get(s[0].substring(len-16,len)+" "+s[1]),hashMap.get(s[0].substring(len-16,len)+" "+s[1])+1);
                }else {
                    hashMap.put(s[0].substring(len-16,len)+" "+s[1],1);
                    arrayList.add(s[0].substring(len-16,len)+" "+s[1]);
                }
            }else {
                if (hashMap.containsKey(s[0]+" "+s[1])){
                    hashMap.replace(s[0]+" "+s[1],hashMap.get(s[0]+" "+s[1]),hashMap.get(s[0]+" "+s[1])+1);
                }else {
                    hashMap.put(s[0]+" "+s[1],1);
                    arrayList.add(s[0]+" "+s[1]);
                }
            }


        }



        for (int i = (arrayList.size()>8?arrayList.size()-8:0); i < arrayList.size(); i++) {
            System.out.println(arrayList.get(i)+" "+hashMap.get(arrayList.get(i)));
        }





    }



    static class simpleRecord{
        private int id;
        private String daiMa;
        private int count;

        public simpleRecord(int id, String daiMa, int count) {
            this.id = id;
            this.daiMa = daiMa;
            this.count = count;
        }

        public int getId() {
            return id;
        }

        public void setId(int id) {
            this.id = id;
        }

        public String getdaiMa() {
            return daiMa;
        }

        public void setdaiMa(String daiMa) {
            this.daiMa = daiMa;
        }

        public int getCount() {
            return count;
        }

        public void setCount(int count) {
            this.count = count;
        }
    }










}
